特定のチャンネルにメッセージを送信するSlack Appを作る

特定のチャンネルにメッセージを送信するSlack Appを作る

Clock Icon2024.12.03

特定のチャンネルにメッセージを送信するだけのSlack Appを作りたいと思ったのですが、Slack Appの設定が複雑(設定項目がたくさんでどれを使っていいかわからない)で混乱してしまったのでこれを機にまとめておきます。

上記を実現するには大きく分けて以下のステップが必要です。

  • App作成
  • Appをワークスペースにインストール
  • Appをチャンネルに追加

ひとつずつ説明していきます。

App作成

https://api.slack.com/apps にアクセスし、右上の「Create New App」ボタンを押します。

create-new-app.png

「From a manifest」をクリック。

From-a-manifest.png

Appを開発するワークスペースを選択します。

select-workspace.png

ワークスペースの設定次第では、appの作成に管理者の許可が必要です。

need-approval.png

次にマニフェストの作成です。

manifest.png

今回はYAMLで作成します。

_metadata:
  major_version: 1
  minor_version: 1
display_information:
  name: just-post-bot
  description: Bot tokens created for this app can just post messages to channels they're invited to
  background_color: "#d982b5"
features:
  bot_user:
    display_name: The Workspace Reporter
    always_online: true
  app_home:
    home_tab_enabled: false
    messages_tab_enabled: false
oauth_config:
  scopes:
    bot:
      - chat:write

以下の値を適宜変更してください。

display_information.name

https://api.slack.com/apps のApp一覧で表示されるApp名や、後の工程でチャンネルにAppを追加するときに検索対象になる名前です。

just-post-bot.png

今回は kazue-slack-post-test に変更しました。

display_information.description

下記画像の上部のように、Appにカーソルを合わせると表示される詳細テキストです。
desc.png

他にもチャンネルにAppを追加するときにも表示されていますね。(display_information.name項の画像を参照ください)

今回は this is the test app to post message in specific channelに変更しました。

display_information.background_color

前述の詳細テキストが表示される部分の背景色のようです。

今回は変更せずこのままとしました。ちなみにこの色はピンクでした。

features.bot_user.display_name

Botユーザーがメッセージを投稿した際の名前です。

今回は kazuetestに変更しました。

以上で変更すべき項目の説明は終わりです。

次画面で内容を確認します。「Create」ボタンをクリックします。
review.png

以上でAppの作成完了です。Appの設定詳細画面に自動遷移します。

create-complete.png

ワークスペースにインストール

「OAuth & Permissions」に移動します。

Appの作成に管理者の許可が必要な場合、OAuth Tokensは管理者の承認が済むまで発行されません。

waiting.png

それ以外の場合は「Install to (ワークスペース名)」というボタンが表示されているので、クリックします。

install-to-workspace.png

次画面です。内容確認して「許可する」をクリックします。

allow.png

Bot User OAuth Tokenが発行されました。値を控えておきましょう。

oauth-token.png

チャンネルに追加

次に、メッセージを送りたいチャンネルに、作成したAppを追加します。
チャンネルの右上のメンバーリストの部分をクリックします。

member2.png

インテグレーションタブから、アプリを追加するをクリックします。

integration-add.png

マニフェストのdisplay_information.nameに設定した名前で検索します。「追加」をクリック。

search.png

インテグレーションタブで追加されたことが確認できます。

added.png

メッセージを送ってみる

curlコマンドでメッセージを送信します。

チャンネルIDの取得

メッセージを送信するチャンネルの指定はチャンネル毎に一意な値になっているチャンネルIDというもので行ないます。以下方法でチャンネルIDを確認・取得します。

まず、チャンネル名をクリックして詳細を表示します。

channel-name.png

デフォルトで表示されているチャンネル情報タブの最下部にIDが表示されています。
channel-id.png

右端からIDをクリップボードにコピーできますのでコピーしましょう。

copy.png

コマンド実行

curlコマンドの引数は以下のようにします。

% curl \
-d "text=test" \
-d "channel=(チャンネルID)" \
-H "Authorization: Bearer (Bot User OAuth Token)" \
-X POST https://slack.com/api/chat.postMessage
  • (チャンネルID)は直前でコピーしたチャンネルIDを貼り付けてください。
  • (Bot User OAuth Token)は「ワークスペースにインストール」欄で「値を控えておきましょう」とお伝えした、xoxbから始まる値に書き換えてください。

コマンド実行すると jsonが返ってきます。okフィールド値が trueであればメッセージ送信成功です。

チャンネルにメッセージが送信されています。(2回コマンド実行しています。)
success.png

参考情報

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.